package com.yxh.www.author.service;

import com.yxh.www.author.domain.SmOrganize;
import com.yxh.www.common.result.Result;
import com.yxh.www.mysql.base.BaseService;

import java.util.List;

/**
 * <p>
 * 系统组织-RBAC 服务类
 * </p>
 *
 * @author Yangxiaohui
 * @since 2020-05-09
 */
public interface SmOrganizeService extends BaseService<SmOrganize> {

    /**
     * 新增系统组织
     *
     * @param organizeName 组织名称
     * @param parentId     上级组织ID
     * @param adminUser    组织管理（负责人）
     * @return 统一响应 {@link Result}
     */
    Result<Object> addSmOrganize(String organizeName, String parentId, String adminUser);

    /**
     * 根据组织ID修改组织信息
     *
     * @param id             组织ID
     * @param organizeStatus 组织状态（0：正常；1：失效）
     * @param adminUser      组织负责人-管理人员-部门主管
     * @return 统一响应 {@link Result}
     */
    Result<Object> modifySmOrganize(String id, String organizeStatus, String adminUser);

    /**
     * 根据组织ID删除组织
     *
     * @param ids 组织ID集合
     * @return 统一响应 {@link Result}
     */
    Result<Object> removeSmOrganize(String[] ids);

    /**
     * 查询组织列表
     *
     * @param organizeName 组织名称    模糊匹配
     * @param parentId     父组织ID   精准匹配
     * @param adminUser    adminUser 组织负责人-管理人员-部门主管   精准匹配
     * @return 统一响应 {@link Result<  List  >} 实体 {@link SmOrganize}
     */
    Result<List<SmOrganize>> listSmOrganize(String organizeName, String parentId, String adminUser);

    /**
     * 分页查询系统组织列表
     *
     * @param organizeName 组织名称    模糊匹配
     * @param parentId     父组织ID   精准匹配
     * @param adminUser    adminUser 组织负责人-管理人员-部门主管   精准匹配
     * @param pageNum      页码          默认值 1
     * @param pageSize     页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    Result<Object> pageSmOrganize(String organizeName, String parentId, String adminUser, Long pageNum, Long pageSize);
}
